using System;
using System.Collections.Generic;
using System.Text;

namespace Googleboys.Inventa.Concept
{
    public class Person
    {
        private string _Name;
        private string _Vorname;
        private string _Funktion;
        private List<Reservierung> _Reservierungen;
        private List<Exemplar> _ZugeordneteGegenstaende;

        private Guid _pkID;

        public Person()
        {
        	_Name = String.Empty;
        	_Vorname = String.Empty;
        	_Funktion = String.Empty;
        	_pkID = Guid.NewGuid();

            _Reservierungen = new List<Reservierung>();
            _ZugeordneteGegenstaende = new List<Exemplar>();
        }

        public string Funktion
        {
            get
            {
                return _Funktion;
            }
            set
            {
                _Funktion = value;
            }
        }

        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }

		public ItemList<Reservierung> Reservierungen
		{
			get
			{
				ItemList<Reservierung> r = new ItemList<Reservierung>();

				foreach (Reservierung reservierung in _Reservierungen)
				{
					r.Add(reservierung);
				}

				return r;
			}
		}

        public Reservierung[] GetReservierungen()
        {
            return _Reservierungen.ToArray();
        }

        public void AddReservierung(Reservierung dieReservierung)
        {
            _Reservierungen.Add(dieReservierung);
        }

        public void RemoveReservierung(Reservierung dieReservierung)
        {
            _Reservierungen.Remove(dieReservierung);
        }

        public string Vorname
        {
            get
            {
                return _Vorname;
            }
            set
            {
                _Vorname = value;
            }
        }

        public Guid PkID
        {
            get { return _pkID; }
            set { _pkID = value; }
        }


		public ItemList<Exemplar> ZugeordneteGegenstaende
    	{
    		get
    		{
				ItemList<Exemplar> r = new ItemList<Exemplar>();

    			foreach (Exemplar exemplar in _ZugeordneteGegenstaende)
    			{
    				r.Add(exemplar);
    			}

    			return r;
    		}
    	}

        public Exemplar[] GetZugeordneteGegenstaende()
        {
            return _ZugeordneteGegenstaende.ToArray();
        }

        public void ExemplarZuordnen(Exemplar ex)
        {
            _ZugeordneteGegenstaende.Add(ex);
        }

        public void ExemplarZuordnungLoeschen(Exemplar ex)
        {
            _ZugeordneteGegenstaende.Remove(ex);
        }

        public override string ToString()
        {
            return string.Format("{0}, {1}", _Name, _Vorname);
        }
    }
}
